import sympy as sym
import numpy as np


def symfalse(n, *args):
    # SymPy simplified the expr already
    if len(args) == 0: 
        if isinstance(n, int):
            result = np.full((n, n), sym.false)
        elif isinstance(n, list):
            result = np.full(tuple(n), sym.false)
        else:
            raise TypeError("Input type not supported.")
        return result
    else:
        arr = [n]
        for arg in args:
            arr.append(arg)
        return symfalse(arr)


# Test case 1: Input is symbolic expressions
result = np.array([
    [sym.false, sym.false],
    [sym.false, sym.false]
])
assert np.array_equal(symfalse(2), result)

result = np.array([
    [
        [sym.false, sym.false, sym.false],
        [sym.false, sym.false, sym.false]
    ],
    [
        [sym.false, sym.false, sym.false],
        [sym.false, sym.false, sym.false]
    ],
    [
        [sym.false, sym.false, sym.false],
        [sym.false, sym.false, sym.false]
    ]
])
assert np.array_equal(symfalse([3,2,3]), result)

result = np.array([
    [
        [sym.false, sym.false, sym.false],
        [sym.false, sym.false, sym.false]
    ],
    [
        [sym.false, sym.false, sym.false],
        [sym.false, sym.false, sym.false]
    ],
    [
        [sym.false, sym.false, sym.false],
        [sym.false, sym.false, sym.false]
    ]
])
assert np.array_equal(symfalse(3,2,3), result)
